package Dominio;

import java.io.Serializable;
import java.util.Vector;

/**
 *
 * @author Sandra Crespo
 */
public class DiccionarioTemas implements Serializable {

    private Vector<Tema> lltemas;

    public DiccionarioTemas() {
        /*{PRE:-}
         * {POST: se crea el DiccionarioTemas vacio}*/
        lltemas = new Vector<Tema>();
    }

    public Tema getTema(String t) throws NoEstaTemaException {
        /*{PRE:-}
         * {POST:devuelve el tema del diccionario con nombre t}*/
        for (Tema tma : lltemas) {
            if (t.equals(tma.getNombre())) {
                return tma;
            }
        }
        throw new NoEstaTemaException("No existe ningun tema cuyo nombre sea " + t);
    }

    public Vector<Tema> getTemas() {
        /*{PRE:-}
         * {POST: devuelve un Vector con los punteros a los Temas de hay en el DiccionarioTemas. Puede devolver un Vector vacio}*/
        return lltemas;
    }

    public int sizeTemas() {
        /*{PRE:-}
         * {POST: devuelve el numero de Temas que hay en el DiccionarioTemas}*/
        return lltemas.size();
    }

    public boolean estaTema(String t) {
        /*{PRE:-}
         * {POST: true: hay un Tema en el DiccionarioTemas cuyo nombre es t. false: no hay ningun Tema en el DiccionarioTemas cuyo nombre sea t}*/
        for (Tema tma : lltemas) {
            if (t.equals(tma.getNombre())) {
                return true;
            }
        }
        return false;
    }

    public boolean addTema(Tema t) {
        /*{PRE: t!=null, y no existe ningun tema en el diccionario cuyo nombre sea el mismo que el nombre del tema t}
         * {POST: true: se ha anadido correctamente el Tema t al DiccionarioTemas. false: no se ha anadido correctamente el Tema t al DiccionarioTemas}*/
        return lltemas.add(t);
    }
    
    public Vector<Tema> getTemas(String secc){
        Vector<Tema> vtemas=new Vector<Tema>();
        for(Tema t:lltemas){
            if(secc.equals(t.getSeccion())) vtemas.add(t);
        }
        return vtemas;
    }
    
}
